package com.me.myFramework.aop22.aop120.intercept.method;

import java.lang.reflect.AccessibleObject;
import java.lang.reflect.Method;

/**
 * 《AOP-120》：  <br><br>
 *
 *  TODO 类似 Spring 的 {@link org.aopalliance.intercept.MethodInvocation MethodInvocation}接口
 */
public interface MethodInvocation120 {

    /**
     * 返回保存当前连接点的对象，例如：调用的目标对象。
     *
     * @return 返回值
     */
    Object getThis();

    /**
     * 获取被调用的方法
     *
     * @return 被调用的方法
     */
    Method getMethod();

    /**
     * 获取被调用方法的参数
     *
     * @return 被调用方法的参数
     */
    Object[] getArguments();

    Object proceed() throws Throwable;

    AccessibleObject getStaticPart();

}
